Fişierul text „graf_in.txt” conţine pe prima linie un număr natural n reprezentând numărul de vârfuri ale unui graf neorientat, iar pe fiecare din următoarele n rânduri câte n valori de 0 şi 1 separate prin spaţii, reprezentând elementele unei linii a matricei de adiacenţă corespunzătoare grafului. a) Să se scrie o funcție grad ce primeşte ca parametru un număr natural x şi returnează gradul vârfului x. b) Să se scrie programul C++ care citeşte datele din fişier şi care afişează în fişirul text „graf_out.txt”, pe primul rând, separate prin câte un spaţiu vârfurile terminale ale grafului, sau mesajul „Nu există”, dacă în graf nu sunt vârfuri terminale, folosind apeluri utile ale subprogramului grad.
Exemplu: Dacă fişierul ”graf_in.txt” are forma: 5 0 0 1 0 1 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 atunci fişierul „graf_out.txt” va conţine numerele 3 şi 4.
Problema 24
Fişierul text „muchii.txt” conţine pe prima linie un număr natural n reprezentând numărul de vârfuri ale unui graf neorientat, pe al doilea rând un număr natural m reprezentând numărul de munchii ale unui graf neorientat, iar pe fiecare din următoarele m rânduri câte două numere naturale, separate pritr-un spaţiu, reprezantând extremităţile unei muchii a grafului. a) Să se scrie o funcție gradce primeşte ca parametru un număr natural x şi returnează gradul vârfului x. b) Să se scrie programul C++ care citeşte datele din fişier, construieşte matricea de adiacenţă asociată grafului, şi care afişează în fişirul text „grade.txt”, separate prin câte un spaţiu vârfurile de grad maxim ale grafului, folosind apeluri utile ale subprogramului grad.
Exemplu: Dacă fişierul ”muchii.txt” are forma: 5 6 1 2 2 3 2 4 3 4 3 5 4 5 atunci fişierul „grade.txt” va conţine numerele 2, 3 şi 4.
Problema 25
Fişierul text „adiacenta.in” conţine pe prima linie un număr natural n reprezentând numărul de noduri ale unui graf orientat, iar pe fiecare din următoarele n rânduri câte n valori de 0 şi 1 separate prin spaţii, reprezentând elementele unei linii a matricei de adiacenţă corespunzătoare grafului. a) Să se scrie o funcție grad_internce primeşte ca parametru un număr natural x şi returnează gradul intern al nodului x. Funcţia grad_extern primeşte ca parametru un număr natural x şi returnează gradul extern al nodului x. b) Să se scrie programul C++ care citeşte datele din fişier, şi care afişează în fişirul text „noduri.out”, separate prin câte un spaţiu nodurile grafului care au gradul intern egal cu gradul extern, folosind apeluri utile ale subprogramelor grad_intern şi grad_extern.
Exemplu: Dacă fişierul ”adiacenta.in” are forma: 5 0 1 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 atunci fişierul „noduri.out” va conţine numerele 3 şi 5.
Problema 26
Fişierul text „arce.txt” conţine pe prima linie un număr natural n reprezentând numărul de noduri ale unui graf orientat, pe al doilea rând un număr natural m reprezentând numărul de arce ale unui graf orientat, iar pe fiecare din următoarele m rânduri câte două numere naturale separate prin spaţii, reprezentând arcele corespunzătoare unui graf orientat.
a) Să se scrie o funcțiegrad_internce primeşte ca parametru un număr natural x şi returnează gradul intern al nodului x.
Funcţia grad_extern primeşte ca parametru un număr natural x şi returnează gradul extern al nodului x.
b) Să se scrie programul C++ care citeşte datele din fişier, construieşte matricea de adiacenţă asociată grafului, şi care afişează în fişirul text „izolate.txt”, separate prin câte un spaţiu nodurile izolate ale grafului, sau mesajul „Nu există”, dacă în graf nu sunt noduri izolate, folosind apeluri utile ale subprogramelor grad_intern şi grad_extern.
Exemplu: Dacă fişierul ”arce.txt” are forma:
5
3
1 2
2 1
2 4
atunci fişierul „izolate.txt” va conţine numerele 3 şi 5.
Probleme atestat
Problema 23
Fişierul text „graf_in.txt” conţine pe prima linie un număr natural n reprezentând numărul de vârfuri ale unui graf neorientat, iar pe fiecare din următoarele n rânduri câte n valori de 0 şi 1 separate prin spaţii, reprezentând elementele unei linii a matricei de adiacenţă corespunzătoare grafului.a) Să se scrie o funcție grad ce primeşte ca parametru un număr natural x şi returnează gradul vârfului x.
b) Să se scrie programul C++ care citeşte datele din fişier şi care afişează în fişirul text „graf_out.txt”, pe primul rând, separate prin câte un spaţiu vârfurile terminale ale grafului, sau mesajul „Nu există”, dacă în graf nu sunt vârfuri terminale, folosind apeluri utile ale subprogramului grad.
Exemplu: Dacă fişierul ”graf_in.txt” are forma:
5
0 0 1 0 1
0 0 0 1 1
1 0 0 0 0
0 1 0 0 0
1 1 0 0 0
atunci fişierul „graf_out.txt” va conţine numerele 3 şi 4.
Problema 24
Fişierul text „muchii.txt” conţine pe prima linie un număr natural n reprezentând numărul de vârfuri ale unui graf neorientat, pe al doilea rând un număr natural m reprezentând numărul de munchii ale unui graf neorientat, iar pe fiecare din următoarele m rânduri câte două numere naturale, separate pritr-un spaţiu, reprezantând extremităţile unei muchii a grafului.a) Să se scrie o funcție gradce primeşte ca parametru un număr natural x şi returnează gradul vârfului x.
b) Să se scrie programul C++ care citeşte datele din fişier, construieşte matricea de adiacenţă asociată grafului, şi care afişează în fişirul text „grade.txt”, separate prin câte un spaţiu vârfurile de grad maxim ale grafului, folosind apeluri utile ale subprogramului grad.
Exemplu: Dacă fişierul ”muchii.txt” are forma:
5
6
1 2
2 3
2 4
3 4
3 5
4 5
atunci fişierul „grade.txt” va conţine numerele 2, 3 şi 4.
Problema 25
Fişierul text „adiacenta.in” conţine pe prima linie un număr natural n reprezentând numărul de noduri ale unui graf orientat, iar pe fiecare din următoarele n rânduri câte n valori de 0 şi 1 separate prin spaţii, reprezentând elementele unei linii a matricei de adiacenţă corespunzătoare grafului.
a) Să se scrie o funcție grad_internce primeşte ca parametru un număr natural x şi returnează gradul intern al nodului x.
Funcţia grad_extern primeşte ca parametru un număr natural x şi returnează gradul extern al nodului x.
b) Să se scrie programul C++ care citeşte datele din fişier, şi care afişează în fişirul text „noduri.out”, separate prin câte un spaţiu nodurile grafului care au gradul intern egal cu gradul extern, folosind apeluri utile ale subprogramelor grad_intern şi grad_extern.
Exemplu: Dacă fişierul ”adiacenta.in” are forma:
5
0 1 1 1 0
0 0 0 0 1
0 1 0 0 0
0 0 0 0 0
1 0 0 0 0
atunci fişierul „noduri.out” va conţine numerele 3 şi 5.
Problema 26
Fişierul text „arce.txt” conţine pe prima linie un număr natural n reprezentând numărul de noduri ale unui graf orientat, pe al doilea rând un număr natural m reprezentând numărul de arce ale unui graf orientat, iar pe fiecare din următoarele m rânduri câte două numere naturale separate prin spaţii, reprezentând arcele corespunzătoare unui graf orientat.
a) Să se scrie o funcțiegrad_internce primeşte ca parametru un număr natural x şi returnează gradul intern al nodului x.
Funcţia grad_extern primeşte ca parametru un număr natural x şi returnează gradul extern al nodului x.
b) Să se scrie programul C++ care citeşte datele din fişier, construieşte matricea de adiacenţă asociată grafului, şi care afişează în fişirul text „izolate.txt”, separate prin câte un spaţiu nodurile izolate ale grafului, sau mesajul „Nu există”, dacă în graf nu sunt noduri izolate, folosind apeluri utile ale subprogramelor grad_intern şi grad_extern.
Exemplu: Dacă fişierul ”arce.txt” are forma:
5
3
1 2
2 1
2 4
atunci fişierul „izolate.txt” va conţine numerele 3 şi 5.
Rezolvari
Problema 23
Problema 24